package mapper;

import com.lagou.entity.CourseComment;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课程留言表(CourseComment)表数据库访问层
 *
 * @author Gilbert
 * @since 2021-06-28 20:44:30
 */
public interface CourseCommentDao {

    /**
     * 保存留言
     *
     * @param courseComment 实例对象
     * @return 影响行数
     */
    Integer saveComment(CourseComment courseComment);

    /**
     * 获取课程留言
     *
     * @param courseId 课程编号
     * @param offset   数据偏移
     * @param pageSize 每页条目数
     * @return 留言对象列表
     */
    List<CourseComment> getCommentsByCourseId(@Param("courseId") Integer courseId, @Param("offset") Integer offset,
                                              @Param("pageSize") Integer pageSize);

    /**
     * 查看某个用户的某条留言是否点过赞
     *
     * @param commentId 留言编号
     * @param userId    用户编号
     * @return 0:没点过赞，1:点过赞
     */
    Integer existsFavorite(@Param("commentId") Integer commentId, @Param("userId") Integer userId);

    /**
     * 保存点赞信息
     *
     * @param commentId 留言编号
     * @param userId    用户编号
     * @return 0:保存失败，1:保存成功
     */
    Integer saveCommentFavorite(@Param("commentId") Integer commentId, @Param("userId") Integer userId);

    /**
     * 更新点赞信息的状态
     *
     * @param status    状态，0:已赞，1:取消赞
     * @param commentId 留言编号
     * @param userId    用户编号
     * @return 0:保存失败，1:保存成功
     */
    Integer updateFavoriteStatus(@Param("status") Integer status, @Param("commentId") Integer commentId,
                                 @Param("userId") Integer userId);

    /**
     * 更新点赞的数量
     *
     * @param x         +1的话，赞的数量增加，-1的话，赞的数量减少
     * @param commentId 某条留言的编号
     * @return 0:保存失败，1:保存成功
     */
    Integer updateLikeCount(@Param("x") Integer x, @Param("commentId") Integer commentId);

}

